﻿# -*- coding: utf-8 -*-

import nltk

sents1 = ['Jean marche', 'Jean aime Marie'] 
sents2 = ['Jean tua Marie avec une corde'] 
sents3 = ['Jean tua Marie avec une corde dans la cuisine'] 



###############################################################
##
## Version 0.9b de NLTK
##
###############################################################

#     NOTE: Le trait sémantique doit être écrit en minuscule "sem" dans la grammaire
      
results1 = nltk.sem.util.text_interpret(sents1, 'file:sr_sem01app.fcfg')
results2 = nltk.sem.util.text_interpret(sents2, 'file:sr_sem02app.fcfg')
results3 = nltk.sem.util.text_interpret(sents3, 'file:sr_sem03app.fcfg')
results4 = nltk.sem.util.text_interpret(sents3, 'file:sr_sem04.fcfg')


#     A) Toutes les analyses d'une phrase en particulier sont dans:

results1['Jean marche']

#     B) La première analyse est dans:

results1['Jean marche'][0]

#     C) l'arbre syntaxique est dans:

results1['Jean marche'][0][0]

#     D) l'expression sémantique est dans:

results1['Jean marche'][0][1]

#     E) on peut également récupérer l'expression sémantique de la phrase en
#        passant par l'arbre syntaxique

results1['Jean marche'][0][0].node['sem']


#     F) récupérer la chaîne de caractères contenant l'expression sémantique (en
#         partant de (D) ou de (E)

results1['Jean marche'][0][1].str()
# retourne: 'marche(jean)'
results2['Jean tua Marie avec une corde'][0][1].str()
# retourne: '(instr(corde) & tuer(jean,marie))'
results3['Jean tua Marie avec une corde dans la cuisine'][0][1].str()
# retourne: '(loc(cuisine) & (instr(corde) & tuer(jean,marie)))'
results4['Jean tua Marie avec une corde dans la cuisine'][0][1].str()
# retourne: 'exists e.((((Event(e,tuer) & obj(e,marie)) & instr(e,corde)) & loc(e,cuisine)) & agt(e,jean))'
      
results = nltk.sem.util.text_interpret(sents1, 'file:sr_sem01app.fcfg')

for allresults in results:
	#print allresults
	for (synrep, semrep) in results[allresults]: 
		print synrep
		print semrep
		synrep.draw()
